   
/**
 * 
 * @author wf.shu
 * @since 2017年11月30日 下午4:35:55
*/

package com.imis.tea.utils.rsa;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


/**
 * @author wf.shu
 * @since 2017年11月30日 下午4:35:55
*/

public class RSATest {
	private static Logger logger = LoggerFactory.getLogger(RSATest.class); 

	/**
	 * 
	 * @author wf.shu
	 * @since 2017年11月30日 下午4:35:55
	 * @param args
	 * @throws Exception 
	 */
	public static void main(String[] args) throws Exception {
		
		RSAKeyPair keyPair = RSAUtils.genKeyPair();
		System.out.println(keyPair.getPrivateKey());
		System.out.println(keyPair.getPublicKey());
		
		String source = "这是一串原始内容这是一串原始内容这是";
		
		logger.info("source length : {}", source.length());
		String sign = RSAUtils.sign(source.getBytes(), keyPair.getPrivateKey());
		logger.info("sigin: {}",sign);
		
		boolean result = RSAUtils.verify(source.getBytes(), keyPair.getPublicKey(), sign);
		logger.info("verify result : {}",result);
		
		
		source = "公钥加密，私钥解密============================";
		logger.error(source);
		logger.info("加密前：{}",source);
        byte[] data = source.getBytes();
        byte[] encodedData = RSAUtils.encryptByPublicKey(data, keyPair.getPublicKey());
        logger.info("加密后：{}" , new String(encodedData));
        byte[] decodedData = RSAUtils.decryptByPrivateKey(encodedData, keyPair.getPrivateKey());
        String target = new String(decodedData);
        logger.info("解密后:{}" , target);
        
        source = "私钥加密，公钥解密++++++++++++++++++++++++++++";
        logger.error(source);
		logger.info("加密前：{}",source);
        byte[] data1 = source.getBytes();
        byte[] encodedData1 = RSAUtils.encryptByPrivateKey(data1, keyPair.getPrivateKey());
        logger.info("加密后：{}" , new String(encodedData1));
        byte[] decodedData1 = RSAUtils.decryptByPublicKey(encodedData1, keyPair.getPublicKey());
        String target1 = new String(decodedData1);
        logger.info("解密后:{}" , target1);
		
	}

}
